Επειδή ο Νίκος έχει πέσει με τα μούτρα στις τσόντες.....
το πρόβλημα έχει να κάνει με το current culture που σε εσένα είναι ελληνικά (el-gr). Επειδή προφανώς έχεις στημένο και το ελληνίκό runtime όπου τα μηνύματα είναι μεταφρασμένα, σου βγάζει τα μηνύματα στα ελληνικά. Για να καταλάβεις μπορείς να δεις το παρακάτω snippet, το οποίο αλλάζει το current culture του τρέχοντος thread σε en-us ώστε να εμφανίζει τα μηνύματα στα αγγλικά και μετά επαναφέρει το προηγούμενο culture.
CultureInfo oldCI = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture ("en-US");
Thread.CurrentThread.CurrentUICulture=new CultureInfo("en-US");
try
{
System.IO.StreamReader sr=new System.IO.StreamReader(@"c:\does-not-exist");
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString();
}
Thread.CurrentThread.CurrentCulture = oldCI;
Thread.CurrentThread.CurrentUICulture = oldCI;
Θα μπορούσες να θέσεις το culture στο τρέχον thread στην αρχή του προγραμματος να είναι en-US, αλλά θέλει προσοχή. Γιατί οι αριθμοί και οι ημερομηνίες θα εμφανίζονται στα αγγλικά και όχι στο τρέχον του συστήματος που για σένα που είναι en-El θα είναι στα ελληνικά.
Το καλύτερο που μπορείς να κάνεις είναι να αφήσεις το default format και να τυπώνεις τα μηνύματα με την ΤοString() method. δηλαδή
catch(Exception ex)
{
Console.WriteLine(ex.ToString(new CultureInfo("en-US"));
}
η ακόμα καλύτερα να φτιακεις ένα extension που θα το κάνει αυτόματα
Γιώργος Σακαλής